home *** CD-ROM | disk | FTP | other *** search
/ Aminet 8 / Aminet 8 (1995)(GTI - Schatztruhe)[!][Oct 1995].iso / Aminet / dev / debug / Disectv18b.lha / document / History.doc < prev    next >
Text File  |  1995-07-12  |  15KB  |  334 lines

  1. * ------------------------------------------------------------------------- *
  2.  
  3.         Disect - © DMA 1994-5        24.11.94
  4.         =====================        ========
  5.  
  6. V1.0: 13 Mar-Oct 94    At times, I thought I'd never get there...
  7. -------------------
  8.  
  9. V1.1: 17.11.94-24.11.94    Well, from my rather affected memory:
  10. -----------------------
  11.  
  12.     1) No longer crashes if disassembly window at hardware registers
  13.     2) No longer need to define hundreds of copper addresses one
  14.         at a time (!)
  15.     3) DataStrings allow 'X' in base string
  16.     4) Will load executables containing LINE debug/HCLN hunks
  17.  
  18. V1.2: 25.11.94-29.11.94    Got fed up playing Frontier, so...
  19. -----------------------
  20.  
  21.     1) Gave screen a proper menu bar, and menus. ASL menus OK now.
  22.     2) Screen is now WB2+, ASL requester is (at last) blue!
  23.     3) Disect aware of 'gadtools.library' base address
  24.     4) Main window is now WFLG_BACKDROP, so now cannot lose ASL
  25.         requester window behind it! I remember the day I
  26.         discovered that one...
  27.     5) Key '+' swaps both disassembly windows
  28.     6) Symbol Window: LMB on a selected symbol, moves (upper)
  29.         disassembly window to address of (program) symbol
  30.     7) Up & Down arrow gadgets in disassembly windows
  31.  
  32. V1.3: 30.11.94-7.12.94
  33. ----------------------
  34.  
  35.     1) A bug which made Process crash/caused system corruption
  36.         on Process termination creeped into V1.1. Dead now...
  37.     2) INCBIN Request. Thanks to Mark M for that idea
  38.     3) Symbol Window: if press a letter key (with/without) SHIFT key,
  39.         or '.' key, and if symbols are sorted alphabetically,
  40.         now moves window to first symbol which begins with
  41.         that character
  42.     4) Improved algorithms for ensuring disassembly windows align
  43.         themselves to defined program addresses
  44.     5) Improved handling of global/local program symbol definition
  45.         and reference
  46.     6) Added an 'about' message
  47.     7) When define global program symbol, opens request if causes
  48.         local program symbols to be corrupted
  49.     8) RMB on a local in program symbol area moves disassembly window
  50.         the local's global symbol
  51.  
  52. V1.4: 7.12.94-11.12.94
  53. ----------------------
  54.  
  55.     1) When disassemble to file, will concatenate successive DC.X
  56.         statements to produce (much fewer) lines of source
  57.     2) RMB on instruction mnemonic moves PC to instruction
  58.     3) Can display addresses normally, or as hunk start offsets
  59.     4) Allows hunk offsets in expressions: "[0:64]"
  60.     5) Shift key WILL move memory window fast
  61.     6) Letters in hex now follow selected case
  62.     7) Up/down arrow gadgets in windows repeat if held down
  63.     8) Alarm sound when finds search data
  64.  
  65. V1.5: 18.12.94
  66. --------------
  67.  
  68.     1) RMB on displacement (eg: 'dd(Ax)') moves disass window to EA
  69.     2) WB requesters if cannot get resources
  70.  
  71. V1.6: 9.1.95-01.02.95
  72. ---------------------
  73.  
  74.      1) It sometimes missed arrow gadget messages, only responding
  75.         to them when another IDCMP message occurred which
  76.         created a signal bit to the message port. This
  77.         happened if LMB > 4 times quickly on arrow gadgets
  78.      2) System DataStrings: now contain 'X' for address pointers, and
  79.         is now aware of address pointers which point to other
  80.         system structures
  81.      3) System DataStrings: automatic line commenting, and automatic
  82.         program symbol name definition
  83.      4) Allows definition of user address same as previous defined
  84.      5) Allows a base offset address to be defined
  85.      6) LMB on SEA/DEA text to lock register zoom
  86.      7) Auto blank lines preference
  87.      8) SS 'Prev' gadget allows offsets from locals if same global
  88.      9) Dummy symbol selections can be used as line comment texts
  89.     10) Symbol Window now contains a scroller gadget
  90.     11) Disect aware of 'mathffp.library' base address
  91.     12) Added 'PROCP' reserved symbol name
  92.     13) Added Process Grabber, but only tested on A500+ so far
  93.     14) Request windows which take an address range: can enter '=',
  94.         '+X', and ',X' into end address string gadgets
  95.     15) Was unable to read any DSCT data file if the file contained
  96.         no user address structures
  97.     16) Could not detect characters between "9" and "A" as invalid in
  98.         hex numbers input by user
  99.     17) Added LMB function in Display Breakpoints request window
  100.     18) RMB in memory dump will define base offset address
  101.     19) No longer scans executable files to determine project memory
  102.         sizes, now uses seg list (the things you learn once
  103.         you get the RKMs...)
  104.     20) Data areas defined using system DataStrings now get DF'd as
  105.         macros
  106.     21) During DF, if a program symbol name length exceeds one tab
  107.         size, then the remainder of the source line will be
  108.         output using a new line
  109.     22) Increased executable file hunk limit
  110.  
  111. V1.7: 2.2.95-20.3.95
  112. --------------------
  113.  
  114.      1) When RMB on program address or displacement, right ALT will
  115.         move memory window to the address
  116.      2) Memory dump now contains a +/- cycle gadget
  117.      3) When filling memory: eg, if filling LONGs, but address range
  118.         was 31 bytes, Disect would actually write 32 bytes
  119.         (ie: 8 complete LONGs); also changed FORBID/CLEAR
  120.         CACHE/PERMIT method (once per byte, instead of once
  121.         per address range, since very large fills may FORBID
  122.         for too long); also did this for copy memory
  123.      4) Search memory also gives alarm sound when search ends (data
  124.         not found); source/ASCII searches now match any
  125.         number of spaces or tabs
  126.      5) During DF, if a program address was automatically replaced
  127.         with a (program) symbol (creating an instruction
  128.         address), the original address would still be logged
  129.         as an missing undefined-reference address; by adding
  130.         a single instruction, this was solved
  131.      6) Added Process Menu 'Breakpoint At Active Process PC' function,
  132.         but I think the world may not like this too much...
  133.      7) A new, improved Symbol Selection window...
  134.      8) Cute little arrow gadgets in main window to move disassembly
  135.         windows left and right
  136.      9) Disect refused to disassemble movec control registers (unless
  137.         the upper 4 bits of the opcode extension word were 0)
  138.     10) Disect hung when I ungrabbed what I had previously considered
  139.         to be a safe Process to do this to... it was a very
  140.         well hidden bug (since I did not realise that by
  141.         sending a Signal to a Wait()ing Process, a task-
  142.         switch might/will occur)
  143.     11) Added Process memory allocations monitor, & unfreed memory
  144.         list when Process terminates
  145.     12) History buffer no longer limited to only four entries (!)
  146.     13) ASL window size and coords now saved as Preferences
  147.     14) Can now extract symbols from .gs files
  148.     15) Binary files: allows load to a preferred address
  149.     16) Disect auto-replaces CUSTOM/CIA addresses with symbols
  150.     17) Another bug: if an address register contained a library base
  151.         address, and was displayed in register window as,
  152.         eg: 'BASEDOS', then the content of the address would
  153.         not be displayed
  154.     18) Mark M pointed out to me that 'CUSTOM' is defined in
  155.         'intuition/preferences.i', but not as $DFF000,
  156.         so had to rename the same symbol (held within
  157.         Disect executable file) to 'CUSTOM_BASE'
  158.     19) Allows '.x' in expressions for FFP values
  159.     20) Fill & Copy Memory: no longer FORBID/CLEAR CACHE/PERMIT
  160.     21) LMB on address digits in disass window: if right ALT pressed
  161.         moves memory window to address (instead of defining
  162.         a breakpoint)
  163.     22) Had a bit of screen corruption (register/memory window) if
  164.         defined a base offset which caused large offsets to
  165.         be displayed (eg: '[-$12345678]', which would not
  166.         fit into 10-chars available for it)
  167.     23) Now allows definition of key macros... it's simple, but
  168.         highly effective, and I'll sleep with a grin on
  169.         my face tonight! (I will get around to allowing
  170.         macros to be loaded/saved... eventually)
  171.     24) Previously, could not replace references to seglists with
  172.         program symbols (eg: 'move.l main-4,a0'), so Disect
  173.         will now do this automatically
  174.     25) Grabbing a Process would crash if it's pr_WindowPtr was -1
  175.     26) Now replaces 'jsr dd(a6)' with relevant '_LVO' symbols for
  176.         following libraries: Exec, DOS, Gfx, Int, ASL,
  177.         GadTools, MathFFP
  178.     27) Can no longer define breakpoints outside project memory range
  179.     28) MultiBin files load and save, and program 'AllocMultiBin'
  180.     29) Request window gadgets now display '_' characters beneath
  181.         letters equivalent to keyboard controls
  182.     30) Now allows definition of a Process's variables memory area
  183.         (either within Process, or allocated memory), and
  184.         can define user constant symbols as displacements
  185.         within this memory (eg: dd(ax)), so that Disect can
  186.         auto-replace any displacements with relevant constant
  187.         symbol
  188.     31) Disect will now display content of addresses (eg: register
  189.         window) as program symbols (no longer displays only
  190.         an address as a program symbol)
  191.     32) Found a very obscure bug: if a 'JSR _LVOAllocMem' was ('E')
  192.         executed (buffered), and if this memory was not freed
  193.         then when Process terminated, unfreed memory was not
  194.         listed as 'SELF' allocated
  195.     33) Now allows binary files to be inserted into loaded project
  196.     34) With much DSCT data (especially on a 500+!), things tended
  197.         to get slow, so added something to speed things up
  198.         (although it still seems too slow at times...)
  199.     35) Auto Trace mode!!
  200.     36) Hardware monitor (not finished?!)
  201.  
  202. V1.8: 21.3.95 ... 10.7.95
  203. -------------------------
  204.  
  205.      1) Hardware monitor now finished
  206.      2) Can now end a key-macro definition with a request window open
  207.      3) Key-macros now record menu messages
  208.      4) Can save INCBIN areas as IFF ILBMs
  209.      5) Added audio sample player
  210.      6) Can manually open trackdisk device (for when if have saved
  211.         a pre-loaded boot block as a multibin file)
  212.      7) Disect will now auto-replace ARID references to chip & CIA
  213.         registers when PC at, eg: ...,dmacon(a4)
  214.      8) Can now SET or EQU constant symbols manually
  215.      9) Disect now shows possible Process variables memory references
  216.         using a 'V' marker, and LMB on this will auto-replace
  217.     10) Instant definition of BYTE/WORD/LONG Data addresses via LMB
  218.     11) Defining data addresses until 'Next Symbol' will now define
  219.         data area size explicitly, instead of leaving it 'variable'
  220.     12) Can now save boot blocks
  221.     13) DF now warns of references to addresses in project mem but
  222.         outside disassemble area(s)
  223.     14) DF areas now displayed as (blue?) background in disassembly
  224.         window
  225.     15) DF address range lists can now be loaded and saved
  226.     16) Can now 'Run Copper List'
  227.     17) Will now remap executable file's Process [hunk:offset]
  228.          to a corresponding [offset] into the executable
  229.          file on disk (for when executable is loaded as a
  230.          binary file...)
  231.     18) Will now search user addresses for use of any system/user
  232.          symbol
  233.     19) MultiBin files now allow Process status to be saved. Is only
  234.          useful for games (ie: does not use OS, probably kills
  235.          it straight away) since is ?impossible? to save a
  236.          Process which has eg: opened a screen & 4 windows
  237.          and half a dozen third-party libraries, set up
  238.          interrupt servers, ... etc AND restore EVERYTHING
  239.          when you load it back up later
  240.     20) A MultiBin 'file' can consist of more than one file (eg:
  241.          a 1.5 meg 'file' split across two disks)
  242.     21) Two more prefs: maximum MultiBin file size & '.b'/'.s' for
  243.          branch instructions
  244.     22) Bug fixed: did not select copjmp1 or 2 when execute a write
  245.         to either register
  246.     23) Hardware monitor now does (certain) blitter registers
  247.     24) Finally removed the (redundant) project request window
  248.     25) Can now also define data areas until next -1 byte/word/long
  249.     26) Finally fixed the annoying ASL for Mark M
  250.     27) Can load/save individual DataStrings
  251.     28) DF: user constant EQUs now grouped according to prefix text
  252.         (ie: any text before a '_' character), and listed
  253.         in increasing numeric order
  254.     29) And system constant EQUs are also
  255.     30) Found a bug during DF with spaces (not tabs), which caused
  256.         corrupt source files when disassembling system
  257.         structure macros
  258.     31) Bug: sometimes, when LMB on an #immediate number which was
  259.         in project memory range, its value was ignored,
  260.         resulting in only allowing a symbol selection
  261.         for a value of zero (this only occurred when #imm
  262.         was specifically immediate data in an instruction,
  263.         eg: addi.l #x, as opposed to, say, add.l <EA>,
  264.         where <EA> was immediate data
  265.     32) Added maximum DF source file size pref
  266.     33) Crashed when traced/executed, eg: move.l d0,$4.w, even with
  267.         hardware monitor enabled; is ok now
  268.     34) Hardware monitor now tracks bus error vector instead of odd
  269.         address vector, since Disect uses odd vec during HWM
  270.     35) Previously, did not auto-replace, eg: ...,0(a0), to become
  271.         ...,ciapra(a0), because EA mode was ARI (not ARID),
  272.         where '0' was auto done by Disect
  273.     36) Now replaces ARIDI references to hardware registers (used to
  274.         be only ARID references)
  275.     37) Will now auto replace the bit number of a btst/bset/bclr/bchg
  276.         when DEA is CIAA_PRA, CIAB_PRA, or CIAB_PRB (very
  277.         useful when dissecting disk loaders...)
  278.     38) Added stuff to allow a Process to safely alter a7 (hardware
  279.         menu item 'Stack Top'), and checks if attempt to
  280.         execute or auto-trace a move to a7 when the address
  281.         is not in project memory
  282.     39) SysSymbol data is now compressed; this saved about 40-50k of
  283.         disk space
  284.     40) Bug fixed: if executed/traced instruction with (conditional)
  285.         breakpoint at PC, did not suspend at next instruction,
  286.         only did so when expression was TRUE (it was a loop,
  287.         fortunately!)
  288.     41) Ditto: sometimes got an $80000003 when LMB on the operand of
  289.         a DC.X which had been defined using a system Data-
  290.         String
  291.     42) Previously, GrabProcess would check the instruction before
  292.         the rts address from Exec.Wait()/WaitPort(), to
  293.         ensure it was a jsr _LVO(a6) - this is not always
  294.         the case, and resulted in not being able to grab
  295.         certain Processes, so I removed this check
  296.     43) DC.L operands: if have matching program symbol, now displays
  297.         'P' marker, and can LMB on this for auto-replace
  298.     44) Auto-LVOs now also done for jmp dd(a6) as well as jsr dd(a6)
  299.     45) Added Task & Process system DataStrings (I wanted them to
  300.         dissect ExecBase TaskWait list, to see why I couldn't
  301.         grab SimCity! see #42 above!)
  302.     46) Further to #38, I forgot to allow a7 to be changed by an
  303.         instruction so that the new address is not in project
  304.         memory, but is in stack memory (!). Then, spent two
  305.         days allowing for every instruction which would alter
  306.         a7. By method, this worked by checking if the DEA is
  307.         a7, but, finally, discovered: exg a7,a0 (a7 is SEA!).
  308.         What fun this all was (?)
  309.     47) In memory window (small one in main screen), if any memory
  310.         address is within the Process's Process structure,
  311.         Disect now displays, eg: TC_SPLOWER, or pr_SegList
  312.         instead of the address (is preference-able: 'Symbolic
  313.         Address Display')
  314.     48) Previously, if I defined a data area using, for example, an
  315.         LH DataString, but then realised it was an LN, it
  316.         would not (always) replace the line comments, and it
  317.         would never replace the program symbol at data area
  318.         start (which messed up the macros during DF!)
  319.     49) During auto-trace, a JMP to a ROM (or external) function
  320.         would be traced even if you didn`t want it to be,
  321.         since Disect was only looking for JSR (or BSR!)
  322.         to ROM/etc
  323.     50) Another One! With a grabbed Process, auto-trace mode did
  324.         not detect a write to stack memory as being a
  325.         permitted DEA
  326.     51) Disect now checks to ensure that TRACE and ILLEGAL vectors
  327.         are intact before executing anything/anyhow
  328.     52) Can now (at last!) display Process's allocated memory
  329.         (if a memory monitor has been installed)
  330.     53) Current project name now displayed in screen title
  331.     54) Disect now allows 'address constant' symbols; defined via
  332.         CTRL key & LMB on 'd0', etc, in register window
  333.  
  334. * ------------------------------------------------------------------------- *